iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Software Development

Redis還在學系列 第 23

Day23 Redis架構實戰-Sentinel組態檔設定

  • 分享至 

  • xImage
  •  

sentinel.conf

# 高可用配置搭配Sentinel機制
                           --->   Redis (Replica)
client ---> Redis (Master)
                           --->   Redis (Replica)
-------------------------------------------------
                sentinel
  • 依照以上的配置,Master與Replica間會自動同步資料,Sentinel則為持續的監控Master是否正常,當Master掛掉時,會把Replica切換為Master提供用戶端服務.

sentinel組態

  • protected-mode

基本上sentinel不允許localhost以外的連線,如果需要外部連入則除了關閉保護模式外,也需要額外配置bind或是防火牆,避免安全性風險.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658ivs8IZFKVP.png

# 預設
# protected-mode yes

# 關閉保護模式
protected-mode no
bind 192.138.10.1 ...
  • port

sentinel 的實體端口.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658YLiIeH4rqT.png

# 預設
port 26379
  • daemonize

是否設定sentinel跑在背景還是前景模式.

https://ithelp.ithome.com.tw/upload/images/20211008/2011165899rMrtfOIg.png

# 預設
daemonize no

# 背景模式
daemonize yes
  • pidfile

搭配上面daemon啟動方式使用,會在啟動時寫入指定路徑檔案,關閉服務時則刪除.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658q3LuWcnJyo.png

# 預設
pidfile /var/run/redis-sentinel.pid
  • logfile

設定sentinel的日誌資料.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658ckvCKscSRH.png

# 預設
logfile ""

# 加入檔案路徑
logfile "/tmp/redis-sentinel_26379.log"
  • sentinel announce-ip
  • sentinel announce-port

設定NAT網路環境中的IP與Port.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658cFWRTlxvV7.png

# 預設
# sentinel announce-ip 1.2.3.4
# sentinel announce-port 26379
  • dir

設定暫放資料夾.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658WfNogVak3u.png

# 預設
dir /tmp
  • sentinel monitor

設定監控目前的Master與當Master發生異常時需要幾個sentinel確認才可以切換.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658fVNGXVrxDf.png

# 預設
# Redis mymaster ip=127.0.0.1 port 6379,當異常發生時需要有2台sentinel認可才可以切換
sentinel monitor mymaster 127.0.0.1 6379 2

# sentinel切換成一台
sentinel monitor mymaster 127.0.0.1 6379 1
  • sentinel auth-pass

設定for sentinel連線到Redis Master時所需要的密碼.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658euR0fVwhOg.png

# 預設
# sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
  • sentinel auth-user

設定for sentinel連線到Redis Master時所需要的使用者.

https://ithelp.ithome.com.tw/upload/images/20211008/201116589ohllusIO0.png

sentinel auth-user <master-name> <username>
  • sentinel down-after-milliseconds

設定當Replica與Master資料同步停止超過多少秒則不能成為Master.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658q5BNUcTLxa.png

# 預設
# 資料同步停止不可以超過30秒
sentinel down-after-milliseconds mymaster 30000
  • user

從Redis 6.2 版本支援使用者相關權限設定.

https://ithelp.ithome.com.tw/upload/images/20211008/201116583TkR1t2l5p.png

# 預設
# user worker +@admin +@connection ~* on >ffa9203c493aa99
  • acllog-max-len

設定acl記錄中的項目上限.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658x5kCys4P0S.png

# 預設
acllog-max-len 128
  • aclfile

透過檔案設定acl.需注意如果sentinel.config已經設定acl,則會拒絕檔案acl設定.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658MqIG4vgcfy.png

# 預設
# aclfile /etc/redis/sentinel-users.acl
  • requirepass

設定sentinel密碼

https://ithelp.ithome.com.tw/upload/images/20211008/20111658ojNpgJN3ZQ.png

# 預設
# requirepass <password>
  • sentinel sentinel-user

設定sentinel與其他sentinel間連線的使用者.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658auiUTTJhNQ.png

# 預設
sentinel sentinel-user <username>
  • sentinel sentinel-pass

設定sentinel與其他sentinel間的連線密碼.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658ZWFDJKLFTS.png

# 預設
sentinel sentinel-pass <password>
  • sentinel parallel-syncs

設定與Master平行同步資料。

https://ithelp.ithome.com.tw/upload/images/20211008/20111658Cv7LvpENxb.png

# 預設
sentinel parallel-syncs mymaster 1
  • sentinel failover-timeout

在failover切換時需要多少時間內完成,否則失敗.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658B7aCFm9vzI.png

# 預設 3分鐘
sentinel failover-timeout mymaster 180000

SCRIPTS EXECUTION

sentinel notification-script 和 sentinel reconfig-script 腳本依序被執行時,執行結果回應1時則會重試10次,回應2時則不會重試,中斷腳本進行則會收到回應1,腳本執行時間最長不可以超過60秒.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658oLP8xWLbRq.png

NOTIFICATION SCRIPT

通過腳本設定當sentinel有事件發生時,發送訊息或是電子郵件通知相關人員.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658uLWihXh5K8.png

# 預設
# sentinel notification-script mymaster /var/redis/notify.sh

CLIENTS RECONFIGURATION SCRIPT

通過腳本設定Master的組態檔.

https://ithelp.ithome.com.tw/upload/images/20211008/201116587JbCjtPXfD.png

# 預設
# sentinel client-reconfig-script mymaster /var/redis/reconfig.sh

SECURITY

設定是否不可以在sentinel運行中修改CLIENTS RECONFIGURATION SCRIPT腳本.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658HjXtrJS47G.png

# 預設
sentinel deny-scripts-reconfig yes

REDIS COMMANDS RENAMING

透過指定將Master的組態檔更名.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658E3MvoWn06m.png

HOSTNAMES SUPPORT

  • SENTINEL resolve-hostnames

設定是否以Server主機名代替連線IP.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658F5mbOSBYlB.png

# 預設
SENTINEL resolve-hostnames no
  • SENTINEL announce-hostnames

當設定以Server主機名代替連線IP時,主機名稱是否要唯一.

https://ithelp.ithome.com.tw/upload/images/20211008/20111658PgP35yT9Gw.png

# 預設
SENTINEL announce-hostnames no

上一篇
Day22 Redis架構實戰-高可用性使用Sentinel機制
下一篇
Day24 Redis架構實戰-Sentinel叢集架構
系列文
Redis還在學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言